package Com.view;

import Com.perpus.Perpustakaan;
import Com.perpus.TimerBacaAnggota;
import Com.perpus.TimerBacaPublikasi;
import Com.perpus.TimerSimpanAnggota;
import Com.perpus.TimerSimpanPublikasi;
import Com.view.PanelLihatAnggota;
import Com.view.PanelLihatPublikasi;
import Com.view.PanelTambahAnggota;
import Com.view.PanelTambahPublikasi;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;

public class FrameUtama extends JFrame{
   private JMenuBar menuBar;
   private JMenu menuPublikasi;
   private JMenu menuAnggota;
   private JMenu menuPinjaman;
   private JMenuItem menuTambahPublikasi;
   private JMenuItem menuTambahAnggota;
   private JMenuItem menuTambahPinjaman;
   private JMenuItem menuTambahFotoAnggota;
   private JMenuItem menuSimpanFilePublikasi;
   private JMenuItem menuBacaFilePublikasi;
   private JMenuItem menuLihatPublikasi;
   private JMenuItem menuSimpanTabelPublikasi;
   private JMenuItem menuBacaTabelPublikasi;
   private JMenuItem menuSimpanFileAnggota;
   private JMenuItem menuBacaFileAnggota;
   private JMenuItem menuLihatAnggota;
   private JMenuItem menuSimpanTabelAnggota;
   private JMenuItem menuBacaTabelAnggota;
   private JMenuItem menuSimpanFilePinjaman;
   private JMenuItem menuBacaFilePinjaman;
   private JMenuItem menuLihatPinjaman;
   private JMenuItem menuSimpanTabelPinjaman;
   private JMenuItem menuBacaTabelPinjaman;
   private JMenuItem menuCariAnggota;


   public FrameUtama () {
       inisialisasi();
       TimerBacaPublikasi timerBacaPub = new TimerBacaPublikasi(5000);
       TimerSimpanPublikasi timerSimpanPub = new TimerSimpanPublikasi(5000);
       TimerBacaAnggota timerBacaAng = new TimerBacaAnggota(5000);
       TimerSimpanAnggota timerSimpanAng = new TimerSimpanAnggota(5000);
   }

   public void inisialisasi () {

       this.setSize(700,700);
       menuBar = new JMenuBar();
       this.setJMenuBar(menuBar);
       menuPublikasi = new JMenu("Publikasi");
       menuBar.add(menuPublikasi);
       menuAnggota = new JMenu("Anggota");
       menuBar.add(menuAnggota);
       menuPinjaman = new JMenu ("Pinjaman");
       menuBar.add(menuPinjaman);
       menuTambahPublikasi = new JMenuItem("Tambah Publikasi");
       menuSimpanFilePublikasi = new JMenuItem("Simpan");
       menuBacaFilePublikasi = new JMenuItem ("Baca");
       menuLihatPublikasi = new JMenuItem("Lihat Publikasi");
       menuSimpanTabelPublikasi = new JMenuItem("Simpan Ke Tabel");
       menuBacaTabelPublikasi = new JMenuItem("Baca Dari Tabel");
       menuPublikasi.add(menuTambahPublikasi);
       menuPublikasi.add(menuSimpanFilePublikasi);
       menuPublikasi.add(menuBacaFilePublikasi);
       menuPublikasi.add(menuLihatPublikasi);
       menuPublikasi.add(menuSimpanTabelPublikasi);
       menuPublikasi.add(menuBacaTabelPublikasi);
       menuTambahAnggota = new JMenuItem("Tambah Anggota");
       menuTambahFotoAnggota = new JMenuItem("Tambah Foto");
        menuCariAnggota = new JMenuItem ("Cari Anggota");
       menuSimpanFileAnggota = new JMenuItem("Simpan");
       menuBacaFileAnggota = new JMenuItem ("Baca");
       menuLihatAnggota = new JMenuItem("Lihat Anggota");
       menuSimpanTabelAnggota = new JMenuItem("Simpan Ke Tabel");
       menuBacaTabelAnggota = new JMenuItem("Baca Dari Tabel");
       menuAnggota.add(menuTambahAnggota);
       menuAnggota.add(menuTambahFotoAnggota);
       menuAnggota.add(menuCariAnggota);
       menuAnggota.add(menuSimpanFileAnggota);
       menuAnggota.add(menuBacaFileAnggota);
       menuAnggota.add(menuLihatAnggota);
       menuAnggota.add(menuSimpanTabelAnggota);
       menuAnggota.add(menuBacaTabelAnggota);
       menuTambahPinjaman = new JMenuItem ("Tambah Pinjaman");
       menuSimpanFilePinjaman = new JMenuItem("Simpan");
       menuBacaFilePinjaman = new JMenuItem ("Baca");
       menuLihatPinjaman = new JMenuItem("Lihat Pinjaman");
       menuSimpanTabelPinjaman = new JMenuItem("Simpan Ke Tabel");
       menuBacaTabelPinjaman = new JMenuItem("Baca Dari Tabel");
       menuPinjaman.add(menuTambahPinjaman);
       menuPinjaman.add(menuSimpanFilePinjaman);
       menuPinjaman.add(menuBacaFilePinjaman);
       menuPinjaman.add(menuLihatPinjaman);
       menuPinjaman.add(menuSimpanTabelPinjaman);
       menuPinjaman.add(menuBacaTabelPinjaman);

       menuTambahPublikasi.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               menuTambahPublikasiAction ();
           }

       });
       menuSimpanFilePublikasi.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
                try {
                    menuSimpanFilePublikasiAction();
                } catch (IOException ex) {
                    Logger.getLogger(FrameUtama.class.getName()).log(Level.SEVERE, null, ex);
                }
           }
       });
       menuBacaFilePublikasi.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               menuBacaFilePublikasiAction();
           }
       });
       menuTambahAnggota.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               menuTambahAnggotaAction ();
           }

       });
       menuTambahFotoAnggota.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               menuTambahFotoAnggotaAction ();
           }

       });
       menuSimpanFileAnggota.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
                try {
                    menuSimpanFileAnggotaAction();
                } catch (IOException ex) {
                    Logger.getLogger(FrameUtama.class.getName()).log(Level.SEVERE, null, ex);
                }
           }

       });
       menuBacaFileAnggota.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               menuBacaFileAnggotaAction();
           }
       });
       menuTambahPinjaman.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                menuTambahPinjamanAction ();
            }
        });
        menuSimpanFilePinjaman.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
                try {
                    menuSimpanFilePinjamanAction();
                } catch (IOException ex) {
                    Logger.getLogger(FrameUtama.class.getName()).log(Level.SEVERE, null, ex);
                }
           }

       });
       menuBacaFilePinjaman.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               menuBacaFilePinjamanAction();
           }
       });
       menuLihatPublikasi.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               menuLihatPublikasiAction();
           }
       });
       menuLihatPinjaman.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               menuLihatPinjamanAction();
           }
       });
       menuLihatAnggota.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               menuLihatAnggotaAction();
           }
       });
       menuSimpanTabelPublikasi.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               menuSimpanTabelPublikasiAction();
           }
       });
       menuSimpanTabelAnggota.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               menuSimpanTabelAnggotaAction();
           }
       });
       menuBacaTabelPublikasi.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
                try {
                    menuBacaTabelPublikasiAction();
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
           }
       });
       menuBacaTabelAnggota.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
                try {
                    menuBacaTabelAnggotaAction();
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
           }
       });

   }

   public void menuTambahPublikasiAction () {
        JDialog testFrame = new JDialog();
        PanelTambahPublikasi testPanel = new PanelTambahPublikasi();
        testFrame.getContentPane().add(testPanel);
        testFrame.setSize(500, 400);
        testFrame.setVisible(true);
        testFrame.setTitle("Panel Tambah Publikasi");
   }
   public void menuSimpanFilePublikasiAction () throws IOException {
         Perpustakaan.simpanFilePublikasi();
   }

   public void menuBacaFilePublikasiAction () {
        JFrame testFrame = new JFrame();
        PanelBacaPublikasi testPanel = new PanelBacaPublikasi();
        testFrame.getContentPane().add(testPanel);
        testFrame.setSize(500, 400);
        testFrame.setVisible(true);
        testFrame.setTitle("Panel Lihat Publikasi");
   }

   public void menuTambahAnggotaAction () {
        JDialog testFrame = new JDialog();
        PanelTambahAnggota testAnggota = new PanelTambahAnggota();
        testFrame.getContentPane().add(testAnggota);
        testFrame.setSize(500, 400);
        testFrame.setVisible(true);
        testFrame.setTitle("Panel Tambah Anggota");
   }
   public void menuSimpanFileAnggotaAction () throws IOException {
         Perpustakaan.simpanFileAnggota();
   }
   public void menuBacaFileAnggotaAction () {
        JFrame testFrame = new JFrame();
        PanelBacaAnggota testPanel = new PanelBacaAnggota();
        testFrame.getContentPane().add(testPanel);
        testFrame.setSize(500, 400);
        testFrame.setVisible(true);
        testFrame.setTitle("Panel Lihat Anggota");
   }
    public void menuTambahFotoAnggotaAction() {
       JFrame frame = new JFrame();
        frame.setLayout(new BorderLayout());
        PanelTambahFotoAnggota gc = new PanelTambahFotoAnggota();
        frame.add(gc, BorderLayout.CENTER);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(600, 600);
        frame.setVisible(true);
   }
   public void menuTambahPinjamanAction () {
        JDialog testFrame = new JDialog();
        PanelTambahPinjam testPinjaman = new PanelTambahPinjam();
        testFrame.getContentPane().add(testPinjaman);
        testFrame.setSize(500, 400);
        testFrame.setVisible(true);
        testFrame.setTitle("Panel Tambah Pinjaman");
   }
   public void menuSimpanFilePinjamanAction () throws IOException {
         Perpustakaan.simpanFilePinjaman();
   }
   public void menuBacaFilePinjamanAction () {
        JFrame testFrame = new JFrame();
        PanelBacaPinjaman testPanel = new PanelBacaPinjaman();
        testFrame.getContentPane().add(testPanel);
        testFrame.setSize(500, 400);
        testFrame.setVisible(true);
        testFrame.setTitle("Panel Lihat Pinjaman");
   }
   public void menuLihatPublikasiAction() {
        JDialog testFrame = new JDialog();
        PanelLihatPublikasi test = new PanelLihatPublikasi(Perpustakaan.DAFTAR_PUBLIKASI);
        testFrame.getContentPane().add(test);
        testFrame.setSize(500, 400);
        testFrame.setVisible(true);
        testFrame.setTitle("Panel Lihat Publikasi");
   }
   public void menuSimpanTabelPublikasiAction(){
       Perpustakaan.simpanTabelPublikasi();

   }
   public void menuBacaTabelPublikasiAction() throws Exception{
        Perpustakaan.bacaTabelPublikasi();
   }
   public void menuLihatAnggotaAction() {
       JDialog testFrame = new JDialog();
        PanelLihatAnggota test = new PanelLihatAnggota(Perpustakaan.DAFTAR_ANGGOTA);
        testFrame.getContentPane().add(test);
        testFrame.setSize(500, 400);
        testFrame.setVisible(true);
        testFrame.setTitle("Panel Lihat Anggota");

   }
   public void menuSimpanTabelAnggotaAction(){
       Perpustakaan.simpanTabelAnggota();
   }
   public void menuBacaTabelAnggotaAction() throws Exception{
       Perpustakaan.bacaTabelAnggota();
   }
   public void menuLihatPinjamanAction() {
       JDialog testFrame = new JDialog();
        PanelLihatPinjaman test = new PanelLihatPinjaman(Perpustakaan.DAFTAR_PINJAMAN);
        testFrame.getContentPane().add(test);
        testFrame.setSize(500, 400);
        testFrame.setVisible(true);
        testFrame.setTitle("Panel Lihat Pinjaman");

   }
   public void menuSimpanTabelPinjamanAction() throws Exception{
       Perpustakaan.simpanTabelPinjaman();

   }
   public void menuBacaTabelPinjamanAction() throws Exception{
      Perpustakaan.bacaTabelPinjaman();
   }

   public void menuCariAnggotaDariTableAction() {
        JFrame testFrame = new JFrame();
        PanelCariAnggota testAnggota = new PanelCariAnggota();
        testFrame.getContentPane().add(testAnggota);
        testFrame.setSize(500, 400);
        testFrame.setVisible(true);
        testFrame.setTitle("Panel Cari Anggota");
   }
}